public class Solution {
    public int findTargetSumWays(int[] nums, int target) {
        int n = nums.length;
        int sum = 0;
        for(int num: nums){
            sum += num;
        }
        int aim = (sum + target) / 2;
        if(aim < 0 || (sum + target) % 2 == 1){
            return 0;
        }
        int[] dp = new int[aim+1];
        dp[0] = 1;
        for(int i = 1; i <= n; i++){
            for(int j = aim; j >= nums[i-1]; j--){
                dp[j] += dp[j - nums[i-1]];
            }
        }

        return dp[aim];
    }
}
